// 需求:只能将两个数字或者字符串相加
function add(arg1, arg2) {
  return arg1 + arg2
}

add(10, 20)
add("abc", "cba")
add({ aaa: "aaa" }, 123)

// 1.实现两个函数
function add1(arg1: number, arg2: number) {
  return arg1 + arg2
}
function add2(arg1: string, arg2: string) {
  return arg1 + arg2
}
add1(10, 20)
add2("abc", "cba")

// 2.错误做法
function add3(arg1: number | string, arg2: number | string) {
  return arg1 + arg2
}


// 3.TypeScript中函数的重载写法
// 3.1先编写重载签名
// 3.2编写通用的函数实现
function add4(arg1: number, arg2: number): number
function add4(arg1: string, arg2: string): string
function add4(arg1, arg2) {
  return arg1 + arg2
}

add4(10, 20)
add4("abc", "cba")

export { }